Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

464
Visualizações
¿Cuál es el propósito de "pip install --user ..."?

Desde pip install --help :

 --user Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on Windows. (See the Python documentation for site.USER_BASE for full details.)

La documentación para site.USER_BASE es un agujero de gusano aterrador de temas interesantes de *NIX que no entiendo.

¿Cuál es el propósito de --user en inglés simple? ¿Por qué sería importante instalar el paquete en ~/.local/ ? ¿Por qué no simplemente poner un ejecutable en algún lugar de mi $PATH ?

over 4 years ago · Santiago Trujillo
8 Respostas
Responde à pergunta

0

pip por defecto instala paquetes de Python en un directorio del sistema (como /usr/local/lib/python3.4 ). Esto requiere acceso de root.

--user paquetes de instalación de pip en su directorio de inicio, lo que no requiere ningún privilegio especial.

over 4 years ago · Santiago Trujillo Relatório

0

En macOS, la razón para usar el indicador --user es para asegurarnos de no dañar las bibliotecas en las que se basa el sistema operativo. Un enfoque conservador para muchos usuarios de macOS es evitar instalar o actualizar pip con un comando que requiera sudo . Por lo tanto, esto incluye la instalación en /usr/local/bin ...

Ref: Instalación de python para Neovim ( https://github.com/zchee/deoplete-jedi/wiki/Setting-up-Python-for-Neovim )

No tengo claro por qué la instalación en /usr/local/bin es un riesgo en una Mac dado que el sistema solo se basa en archivos binarios de Python en /Library/Frameworks/ y /usr/bin . Sospecho que es porque, como se indicó anteriormente, la instalación en /usr/local/bin requiere sudo , lo que abre la puerta a cometer un error costoso con las bibliotecas del sistema. Por lo tanto, instalar en ~/.local/bin es una forma segura de evitar este riesgo.

Ref: Usar python en una Mac ( https://docs.python.org/2/using/mac.html )

Finalmente, en la medida en que hay un beneficio de instalar paquetes en /usr/local/bin , me pregunto si tiene sentido cambiar el propietario del directorio de root a user . Esto evitaría tener que usar sudo y al mismo tiempo protegería contra la realización de cambios dependientes del sistema. * ¿Es este un valor predeterminado de seguridad una reliquia de cómo los sistemas Unix se usaban con más frecuencia en el pasado (como servidores)? ¿O, como mínimo, solo es una buena manera de hacerlo para los usuarios de Mac que no alojan un servidor?

*Nota: la función de protección de integridad del sistema (SIP) de Mac también parece proteger al usuario de cambiar las bibliotecas dependientes del sistema.

- mi

over 4 years ago · Santiago Trujillo Relatório

0

--user instala en site.USER_SITE .

Para mi caso, fue /Users/.../Library/Python/2.7/bin . Así que lo agregué a mi RUTA (en el archivo ~/.bash_profile ):

 export PATH=$PATH:/Users/.../Library/Python/2.7/bin
over 4 years ago · Santiago Trujillo Relatório

0

Otras respuestas mencionan site.USER_SITE como donde se colocan los paquetes de Python. Si está buscando archivos binarios, estos van en {site.USER_BASE}/bin .

Si desea agregar este directorio a la ruta de búsqueda de su shell, use:

 export PATH="${PATH}:$(python3 -c 'import site; print(site.USER_BASE)')/bin"
over 4 years ago · Santiago Trujillo Relatório

0

La mejor manera de hacerlo es instalar virtualenv y no requerir la confusión del --user . Obtendrá más flexibilidad y no se preocupará por aplastar las diferentes versiones y proyectos de Python cada vez que instale un paquete.

https://virtualenv.pypa.io/es/estable/

over 4 years ago · Santiago Trujillo Relatório

0

Sin Entornos Virtuales

pip <command> --user cambia el alcance del comando pip actual para que funcione en la ubicación de instalación del paquete python local de la cuenta de usuario actual, en lugar de la ubicación de instalación del paquete en todo el sistema, que es la predeterminada.

  • Consulte Instalaciones de usuario en la Guía del usuario de PIP.

Esto realmente solo importa en una máquina multiusuario. Todo lo que se instale en la ubicación del sistema será visible para todos los usuarios, por lo que la instalación en la ubicación del usuario mantendrá la instalación del paquete separada de otros usuarios (no lo verán y tendrán que instalarlo ellos mismos por separado para usarlo). Debido a que puede haber conflictos de versión, la instalación de un paquete con dependencias que necesitan otros paquetes puede causar problemas, por lo que es mejor no enviar todos los paquetes que usa un usuario determinado a la ubicación de instalación del sistema.

  • Si se trata de una máquina de un solo usuario, hay poca o ninguna diferencia para instalar en la ubicación --user . Se instalará en una carpeta diferente, que puede o no necesitar agregarse a la ruta, según el paquete y cómo se use (muchos paquetes instalan herramientas de línea de comandos que deben estar en la ruta para ejecutarse desde un shell) .
  • Si se trata de una máquina multiusuario, se prefiere --user a usar root/sudo o requerir la instalación del administrador y afectar el entorno de Python de cada usuario, excepto en los casos de paquetes generales que el administrador quiera poner a disposición de todos los usuarios por defecto. .
    • Nota: Según los comentarios, en la mayoría de las instalaciones de Unix/Linux se ha señalado que las instalaciones del sistema deben usar el administrador de paquetes general, como apt , en lugar de pip .

Con Entornos Virtuales

  • Obtenga más información sobre la instalación de paquetes con entornos virtuales en la documentación de Python Packaging .
  • Lea sobre cómo crear y usar entornos virtuales y el comando venv en los documentos de Python VENV .

La opción --user en un entorno venv/virtualenv activo se instalará en la ubicación python del usuario local (igual que sin un entorno virtual).

Los paquetes se instalan en el entorno virtual de forma predeterminada, pero si usa --user forzará la instalación fuera de los entornos virtuales, en el directorio de secuencias de comandos de python de los usuarios (en Windows, actualmente es c:\users\<username>\appdata\roaming\python\python37\scripts para mí con Python 3.7).

Sin embargo, no podrá acceder a un sistema o instalación de usuario desde un entorno virtual (incluso si usó --user mientras estaba en un entorno virtual).

Si instala un entorno virtual con el --system-site-packages , tendrá acceso a la carpeta del script del sistema para python. Creo que esto también incluía la carpeta de secuencias de comandos de python del usuario, pero no estoy seguro. Sin embargo, puede haber consecuencias no deseadas por esto y no es la forma prevista de usar entornos virtuales.


Ubicación de las carpetas de instalación del sistema Python y del usuario local

Puede encontrar la ubicación de la carpeta de instalación del usuario para python con python -m site --user-base . Estoy encontrando información contradictoria en las preguntas y respuestas, la documentación y, de hecho, uso este comando en mi PC en cuanto a cuáles son los valores predeterminados, pero están debajo del directorio de inicio del usuario ( ~ acceso directo en * nix, y c:\users\<username> típicamente para Windows).


Otros detalles

La opción --user no es válida para todos los comandos. Por ejemplo, pip uninstall encontrará y desinstalará paquetes dondequiera que estén instalados (en la carpeta del usuario, la carpeta del entorno virtual, etc.) y la opción --user no es válida.

Las cosas instaladas con pip install --user se instalarán en una ubicación local que solo verá la cuenta de usuario actual y no requerirá acceso de root (en * nix) o acceso de administrador (en Windows).

La opción --user modifica todos los comandos pip que lo aceptan para ver/operar en la carpeta de instalación del usuario, por lo que si usa pip list --user solo le mostrará los paquetes instalados con pip install --user .

over 4 years ago · Santiago Trujillo Relatório

0

¿Por qué sería importante instalar el paquete en ~/.local/? ¿Por qué no simplemente poner un ejecutable en algún lugar de mi $PATH?

En teoría, se espera que el ~/.local/bin directory esté en su $PATH .

Según estas personas , es un error no agregarlo en $PATH cuando se usa systemd .

Esta respuesta lo explica más extensamente.

Pero incluso si su distribución incluye el directorio ~/.local/bin en $PATH , podría tener el siguiente formato (dentro ~/.profile ):

 if [ -d "$HOME/.local/bin" ] ; then PATH="$HOME/.local/bin:$PATH" fi

lo que requeriría que cierre sesión y vuelva a iniciar sesión, la primera vez que se crea el directorio.

over 4 years ago · Santiago Trujillo Relatório

0

Sólo una advertencia:

De acuerdo con este problema , --user actualmente no es válido dentro del pip de un entorno virtual, ya que la ubicación de un usuario realmente no tiene sentido para un entorno virtual.

Por lo tanto, no use pip install --user some_pkg dentro de un entorno virtual , de lo contrario, se confundirá el pip del entorno virtual. Ver esta respuesta para más detalles.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda